﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace PrimeFactorLibrary
{
    public class PrimeFactorCalculator
    {
        /// <summary>
        /// 获取指定正整数的质因数分解字符串。
        /// </summary>
        /// <param name="number">要分解的正整数（最大值为1000）。</param>
        /// <returns>质因数分解的字符串表示，例如 "2 × 2"。</returns>
        /// <exception cref="ArgumentException">当输入不在有效范围内时抛出异常。</exception>
        public string PrimeFactors(int number)
        {
            if (number <= 0 || number > 1000)
            {
                throw new ArgumentException("输入必须是1到1000之间的正整数。");
            }

            if (number == 1)
            {
                return "1";
            }

            List<int> factors = new List<int>();
            int n = number;

            for (int i = 2; i <= n / i; i++)
            {
                while (n % i == 0)
                {
                    factors.Add(i);
                    n /= i;
                }
            }

            if (n > 1)
            {
                factors.Add(n);
            }

            // 将因数列表反转以符合用户示例中的顺序（较大的质数在前）
            factors.Reverse();

            return string.Join(" × ", factors);
        }
    }
}
